package com.inei.evaluaciondelaencuesta.tools;

import java.io.File;
import java.io.FileOutputStream;
import java.util.List;

import org.apache.http.protocol.HTTP;
import org.xmlpull.v1.XmlSerializer;

import android.content.Context;
import android.os.Environment;
import android.util.Xml;

import com.inei.evaluaciondelaencuesta.model.entity.MarcoEncuesta;
import com.inei.evaluaciondelaencuesta.model.entity.RespuestaEncuesta;

public class Exportar {

	Context context;

	public Exportar(Context context) {
		this.context = context;
	}

	public boolean xml(List<RespuestaEncuesta> lista, MarcoEncuesta marco) {
		File file = null;
		File ruta = null;
		try {
			File root = Environment.getExternalStorageDirectory();
			ruta = new File(root, "/Encuesta a Hogares Rurales/");
			if (!ruta.exists()) {
				ruta.mkdirs();
			}
			file = new File(ruta, "Encuesta-" + marco.getConglomerado() + "-"
					+ marco.getGrupo() + "-" + marco.getVivienda() + ".xml");
			FileOutputStream fos = new FileOutputStream(file);
			XmlSerializer xml = Xml.newSerializer();
			xml.setOutput(fos, HTTP.UTF_8);
			xml.startDocument(HTTP.UTF_8, true);

			xml.startTag("", "script");

			xml.startTag("", "marco_encuesta");

			xml.startTag("", "marco_id");
			xml.text(obtenerValor(marco.getMarco_id()));
			xml.endTag("", "marco_id");

			xml.startTag("", "ccdd");
			xml.text(obtenerValor(marco.getCcdd()));
			xml.endTag("", "ccdd");

			xml.startTag("", "ccpp");
			xml.text(obtenerValor(marco.getCcpp()));
			xml.endTag("", "ccpp");

			xml.startTag("", "ccdi");
			xml.text(obtenerValor(marco.getCcdi()));
			xml.endTag("", "ccdi");

			xml.startTag("", "conglomerado");
			xml.text(obtenerValor(marco.getConglomerado()));
			xml.endTag("", "conglomerado");

			xml.startTag("", "grupo");
			xml.text(obtenerValor(marco.getGrupo()));
			xml.endTag("", "grupo");

			xml.startTag("", "vivienda");
			xml.text(obtenerValor(marco.getVivienda()));
			xml.endTag("", "vivienda");

			xml.startTag("", "obs_dni");
			xml.text(obtenerValor(marco.getObs_dni()));
			xml.endTag("", "obs_dni");

			xml.startTag("", "obs_ap");
			xml.text(obtenerValor(marco.getObs_ap()));
			xml.endTag("", "obs_ap");

			xml.startTag("", "obs_am");
			xml.text(obtenerValor(marco.getObs_am()));
			xml.endTag("", "obs_am");

			xml.startTag("", "obs_n");
			xml.text(obtenerValor(marco.getObs_n()));
			xml.endTag("", "obs_n");

			xml.startTag("", "enc_dni");
			xml.text(obtenerValor(marco.getEnc_dni()));
			xml.endTag("", "enc_dni");

			xml.startTag("", "enc_ap");
			xml.text(obtenerValor(marco.getEnc_ap()));
			xml.endTag("", "enc_ap");

			xml.startTag("", "enc_am");
			xml.text(obtenerValor(marco.getEnc_am()));
			xml.endTag("", "enc_am");

			xml.startTag("", "enc_n");
			xml.text(obtenerValor(marco.getEnc_n()));
			xml.endTag("", "enc_n");

			xml.startTag("", "fecha_entre");
			xml.text(obtenerValor(marco.getFecha()));
			xml.endTag("", "fecha_entre");

			xml.endTag("", "marco_encuesta");

			if (lista != null) {
				for (RespuestaEncuesta resp : lista) {
					xml.startTag("", "respuesta_encuesta");

					xml.startTag("", "respuesta_id");
					xml.text(obtenerValor(resp.getRespuesta_id()));
					xml.endTag("", "respuesta_id");

					xml.startTag("", "formato_id");
					xml.text(obtenerValor(resp.getFormato_id()));
					xml.endTag("", "formato_id");

					xml.startTag("", "marco_id");
					xml.text(obtenerValor(resp.getMarco_id()));
					xml.endTag("", "marco_id");

					xml.startTag("", "conglomerado");
					xml.text(obtenerValor(resp.getConglomerado()));
					xml.endTag("", "conglomerado");

					xml.startTag("", "grupo");
					xml.text(obtenerValor(resp.getGrupo()));
					xml.endTag("", "grupo");

					xml.startTag("", "vivienda");
					xml.text(obtenerValor(resp.getVivienda()));
					xml.endTag("", "vivienda");

					xml.startTag("", "hogar");
					xml.text(obtenerValor(resp.getHogar()));
					xml.endTag("", "hogar");

					xml.startTag("", "tipo_reg");
					xml.text(obtenerValor(resp.getTipo_reg()));
					xml.endTag("", "tipo_reg");

					xml.startTag("", "orden");
					xml.text(obtenerValor(resp.getOrden()));
					xml.endTag("", "orden");

					xml.startTag("", "cap");
					xml.text(obtenerValor(resp.getCap()));
					xml.endTag("", "cap");

					xml.startTag("", "tipo");
					xml.text(obtenerValor(resp.getTipo()));
					xml.endTag("", "tipo");

					xml.startTag("", "codigo");
					xml.text(obtenerValor(resp.getCodigo()));
					xml.endTag("", "codigo");

					xml.startTag("", "P_LECTU");
					xml.text(obtenerValor(resp.getP_LECTU()));
					xml.endTag("", "P_LECTU");

					xml.startTag("", "P_COMPR");
					xml.text(obtenerValor(resp.getP_COMPR()));
					xml.endTag("", "P_COMPR");

					xml.startTag("", "P_OTRO");
					xml.text(obtenerValor(resp.getP_OTRO()));
					xml.endTag("", "P_OTRO");

					xml.startTag("", "P_OTRO_ESP");
					xml.text(obtenerValor(resp.getP_OTRO_ESP()));
					xml.endTag("", "P_OTRO_ESP");

					xml.startTag("", "P_REFOR");
					xml.text(obtenerValor(resp.getP_REFOR()));
					xml.endTag("", "P_REFOR");

					xml.startTag("", "P_ERROR");
					xml.text(obtenerValor(resp.getP_ERROR()));
					xml.endTag("", "P_ERROR");

					xml.startTag("", "P_OBS");
					xml.text(obtenerValor(resp.getP_OBS()));
					xml.endTag("", "P_OBS");

					xml.startTag("", "P_DIREC");
					xml.text(obtenerValor(resp.getP_DIREC()));
					xml.endTag("", "P_DIREC");

					xml.startTag("", "P_IH");
					xml.text(obtenerValor(resp.getP_IH()));
					xml.endTag("", "P_IH");

					xml.startTag("", "P_IM");
					xml.text(obtenerValor(resp.getP_IM()));
					xml.endTag("", "P_IM");

					xml.startTag("", "P_FH");
					xml.text(obtenerValor(resp.getP_FH()));
					xml.endTag("", "P_FH");

					xml.startTag("", "P_FM");
					xml.text(obtenerValor(resp.getP_FM()));
					xml.endTag("", "P_FM");

					xml.startTag("", "P_TM");
					xml.text(obtenerValor(resp.getP_TM()));
					xml.endTag("", "P_TM");

					xml.endTag("", "respuesta_encuesta");
				}
			}

			xml.endTag("", "script");
			xml.endDocument();
			fos.close();

		} catch (Exception e) {
			return false;
		}
		return true;
	}

	public String obtenerValor(int txt) {
		return txt + "";

	}

	public String obtenerValor(String txt) {
		if (txt == null) {
			return "";
		} else {
			return txt;
		}

	}

}
